/**
 * 字典选项加载方法
 */
import {getDictItemsByParentId, getDictListByPage} from '@/adapters/api-adapter';

/**
 * 加载 : 字典
 * @param context - vue对象
 * @param params - 筛选传参 : { current: number, size: number, name: string }
 * @returns {Promise<[]>} - { id, label, value }
 */
export async function loadDictListByPage (context, params) {
  const result = {
    total: 0,
    data: []
  };
  try {
    const res = await getDictListByPage(params);
    if (res.data.code === '0000') {
      // 填充 : 字典选项
      result.data = res.data.data.records.map((item) => {
        return {
          ...item,
          dataType: 'dict',
          id: item.id,
          label: item.name,
          value: item.itemCode
        };
      });
      result.total = res.data.data.length;
    } else {
      context.$message.error(`加载字典失败 : ${res.data.message}`);
    }
  } catch (error) {
    context.$message.error(`加载字典失败 : ${error.message}`);
  }
  return result;
}

/**
 * 加载 : 根据字典(索引)ID, 加载字典项
 * @param context - vue对象
 * @param params - 筛选传参 : { dictId: string }
 * @returns {Promise<[]>} - { id, label, value }
 */
export async function loadDictItemOptionByDictId (context, params) {
  const result = {
    total: 0,
    data: []
  };
  try {
    const res = await getDictItemsByParentId(params);
    if (res.data.code !== '0000') {
      context.$message.error(`加载字典选项失败 : ${res.data.message}`);
      return result;
    }
    res.data.data.forEach(item => {
      result.data.push({
        ...item,
        dataType: 'dictItem',
        id: item.id,
        label: item.itemName,
        value: item.itemCode
      });
    });
    result.total = res.data.data.length;
    return result;
  } catch (error) {
    context.$message.error(`加载字典选项失败 : ${error.message}`);
    return result;
  }
}
